# app/scheduler.py
#同flask启动定时任务的方式
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.interval import IntervalTrigger
from apscheduler.triggers.cron import CronTrigger
import time
import asyncio
from app.tactics.routes import updateEveryDate

from app.tactics.views.suggest_trade import  FundTradingStrategy

import logging
logger = logging.getLogger(__name__)

#定时任务--异步调用
from apscheduler.schedulers.asyncio import AsyncIOScheduler
# 创建一个调度器
scheduler = BackgroundScheduler()
# 创建一个异步任务的调度器
async_scheduler  =   AsyncIOScheduler()

# 定义一个定时任务
async def scheduled_task():
    #await updateEveryDate()
    logger.info(f"Task executed at {time.strftime('%Y-%m-%d %H:%M:%S')}")

# 定义一个定时任务
async def scheduled_task2():
    await FundTradingStrategy().schedule_tasks()
    #logger.info(f"scheduled_task2 executed at {time.strftime('%Y-%m-%d %H:%M:%S')}")


# 将任务添加到调度器 每10s执行一次
#scheduler.add_job(scheduled_task, trigger=IntervalTrigger(seconds=10))
# 使用 CronTrigger 设置任务每天10点运行
#scheduler.add_job(scheduled_task, trigger=CronTrigger(hour=10, minute=0))

# 使用 CronTrigger 设置任务在每天16点到20点之间，每10分钟执行一次
#scheduler.add_job(scheduled_task, trigger=CronTrigger(minute='*/10', hour='14-19'))
async_scheduler.add_job(scheduled_task, trigger=CronTrigger(minute='*/10', hour='16-21'))
# async_scheduler.add_job(scheduled_task2, trigger=CronTrigger(second=10))
async_scheduler.add_job(scheduled_task2, trigger=CronTrigger(second='*/20', hour='13-21'))


# 启动调度器
def start_scheduler():
    scheduler.start()
    async_scheduler.start()

# 停止调度器的方法
def shutdown_scheduler():
    scheduler.shutdown()
    async_scheduler.shutdown()
